package com.sophon.pattern.singleton;

/**
 * 懒汉模式，在使用时才生成实例。
 * 
 * @author Andy
 *
 */
public class LazySingletonSynced2 {

	/*
	 * 使用volatile关键字避免指令重排
	 */
	private static volatile LazySingletonSynced2 instance;

	private LazySingletonSynced2() {

	}

	/**
	 * 只有在第一次初始化实例时才加锁，提高响应速度
	 * @return
	 */
	public static LazySingletonSynced2 getInstance() {
		if (instance == null) {
			synchronized (instance) {
				if (instance == null) {
					instance = new LazySingletonSynced2();
				}
			}
		}
		return instance;
	}
}
